Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
在本系列文會延續 Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore 使用 .NET MAUI 技術所建立的 TopStore App ,更新 .NET MAUI 在 .NET 6 轉換到 .NET 7 時所需要調整的部分,並持續地的開發 TopStore App 其他需要的功能。
本篇是 Re: 從零續用 .NET MAUI 技術開發過去的一個 App : TopStore 系列 系列文的 EP16。
延續 EP15 繼續完成 IDataService、DataService 與 MockData 的處理。
而按照前面 EP 的介紹,大概也知道接下來要開啟 Services 底下的 IDataService 並增加其方法:
Models.OrderDetailShow GetOrderDetailShow(int orderDetilId);
完成結果如下圖:
接著再打開 DataService、MockData 這兩個實作 IDataService 的類別,完成其介面方法實作:
DataService:
public Models.OrderDetailShow GetOrderDetailShow(int orderDetilId)
{
throw new NotImplementedException();
}
完成結果如下圖:
MockData:
public Models.OrderDetailShow GetOrderDetailShow(int orderDetilId)
{
var orderDetailShow = from orderDetail in orderDetails
join product in goods on orderDetail.ProductId equals product.Id
where orderDetail.Id == orderDetilId
select new Models.OrderDetailShow
{
OrderDetailId = orderDetail.Id,
ProductSn = product.Sn,
ProductPrice = product.Price,
ProductName = product.Name,
Quantity = orderDetail.Quantity,
Price = orderDetail.Price,
Note = orderDetail.Note
};
return orderDetailShow.FirstOrDefault();
}
完成結果如下圖:
為了讓 OrderDetailShowPageViewModel 能透過參數注入到 OrderDetailShowPage 當作繫結資料,到 Pages 底下找到 OrderDetailShowPage.xaml.cs 並增加傳參數的建構式:
public OrderDetailShowPage(ViewModels.OrderDetailShowPageViewModel orderDetailShowPageViewModel) : this()
{
BindingContext = orderDetailShowPageViewModel;
}
對了,別忘記改無參數建構式的修飾詞。
完成結果如下圖:
最後,除了再打開 MauiProgram.cs 在 RegisterAppViewsAndViewModels 方法中增加:
builder.Services.AddTransient<Pages.OrderDetailShowPage>();
builder.Services.AddTransient<ViewModels.OrderDetailShowPageViewModel>();
完成結果如下圖:
也記得把之前設計 OrderDetailShowPageViewModel 當中的 OrderDetailId 所註解的程式碼移除註解。
完成結果如下圖:
執行相關結果: